package com.lyb269.jvm.gc;

import org.junit.Test;

/**
 * 引用计数GC
 */
public class ReferenceCountGcTest {

    public Object instance = null;

    @Test
    public void test(){
        ReferenceCountGcTest objA = new ReferenceCountGcTest();
        ReferenceCountGcTest objB = new ReferenceCountGcTest();

        // 互相引用,导致objA objB计数永远不会为0
        objA.instance = objB;
        objB.instance = objA;

        //这里虽然显式的把objA objB 设置为null,也就是说objA和objB指向的对象已经不可能再被访问
        //但是由于它们互相引用对方，导致它们的引用计数器都不为 0，那么垃圾收集器就永远不会回收它们
        objA = null;
        objB = null;

        //主动调用gc
        System.gc();
    }
}
